En los últimos dos años, Sigstore ha pasado de proyecto experimental a estándar de facto para firma de artefactos OCI. Los grandes registros han añadido soporte nativo, proyectos upstream (Kubernetes, Jenkins, Node.js) firman sus releases, y WORK IN PROGRESS en herramientas de verificación. Este artículo cubre el estado real de adopción en registros en 2024, qué funciona en producción y qué sigue emergiendo.
El cambio del último año
Hitos concretos:
- Kubernetes firma todas sus imágenes desde 1.24 (2022) con cosign.
- Python Package Index (PyPI) implementa attestations con Sigstore (PEP 740, 2024).
- NPM añadió provenance con Sigstore en Q4 2023.
- Homebrew provenance en formulae.
- Docker Hub beta de artifacts referenced (donde viven firmas Sigstore).
La dirección es clara: firma como esperado, no como excepción.
Adopción por registro
Docker Hub
Estado: soporte incipiente. Sigstore funciona vía OCI artifacts (cosign lo usa internamente), pero la UI de Docker Hub aún no muestra firmas prominentemente.
Usar Sigstore con Docker Hub:
cosign sign docker.io/myuser/myapp:1.0
cosign verify docker.io/myuser/myapp:1.0 --certificate-identity=... --certificate-oidc-issuer=...
Funciona, pero integración con Docker Scout y búsqueda de Docker Hub es limitada.
GitHub Container Registry (GHCR)
Estado: soporte pulido. GitHub Actions integra Sigstore nativamente via OIDC. Firmar una imagen en workflow es prácticamente una línea:
- uses: sigstore/cosign-installer@v3
- run: cosign sign --yes ghcr.io/owner/repo:${{ github.sha }}
El OIDC token del workflow vincula la firma a workflow + repo + actor. Verificable por cualquiera.
Adopción fuerte entre proyectos open source que publican en GHCR.
AWS Elastic Container Registry (ECR)
Estado: soporte vía OCI artifacts, pero sin integración ECR-native (aún). Hay plugins y scripts pero no es first-class.
AWS tiene su propio ECR image signing basado en AWS KMS, alternativo a Sigstore. Los dos coexisten. Algunas empresas usan Sigstore keyless, otras KMS signing nativo.
Google Artifact Registry (GAR)
Estado: integración con Binary Authorization (propio de GCP) y Sigstore. Buena experiencia en GCP-native workflows.
Google también tiene SLSA attestations integradas, que pueden ir firmadas con Sigstore.
Harbor
Estado: notario v2 / Sigstore nativamente soportado desde Harbor 2.5+.
Harbor es el registro open-source más avanzado en signing. Puede:
- Almacenar firmas Sigstore.
- Enforzar políticas de firma en proyectos específicos.
- Integrar con Fulcio/Rekor públicos o privados.
- Exponer estado de firma en UI.
Para organizaciones self-hosted, Harbor + Sigstore es setup mature.
Quay (Red Hat)
Estado: soporte maduro de Sigstore. Política de firma enforzable. Buena integración con OpenShift.
Flujos de verificación
Tres patrones en producción:
En admission controller
Kyverno con rule Sigstore:
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: verify-sigstore
spec:
validationFailureAction: enforce
rules:
- name: check-signatures
match:
resources:
kinds: [Pod]
verifyImages:
- imageReferences:
- "ghcr.io/myorg/*"
attestors:
- entries:
- keyless:
identities:
- issuer: https://token.actions.githubusercontent.com
subject: https://github.com/myorg/*
Pods con imágenes no firmadas o firmadas por identidad incorrecta son rechazados.
En GitOps (Flux/Argo)
Flux 2 soporta verify Sigstore en sus Kustomization:
apiVersion: image.toolkit.fluxcd.io/v1beta2
kind: ImagePolicy
metadata:
name: myapp
spec:
imageRepositoryRef:
name: myapp-repo
policy:
semver:
range: ">=1.0.0"
verify:
provider: cosign
secretRef:
name: cosign-public-key
Si la firma no verifica, Flux no reconcilia.
En CI/CD pipeline
Verificar antes de deploy:
cosign verify $IMAGE \
--certificate-identity-regexp='^https://github.com/myorg/.+$' \
--certificate-oidc-issuer=https://token.actions.githubusercontent.com \
|| { echo "FIRMA INVALIDA"; exit 1; }
deploy-script $IMAGE
Provenance y SBOM firmados
Más allá de la imagen en sí, el ecosistema está firmando provenance y SBOM:
- SLSA provenance: quién, cómo, cuándo construyó la imagen. Firmable con Sigstore.
- SBOM: inventario de dependencias. Firmable.
- Attestations: afirmaciones específicas (tests pasados, escaneo sin vulns).
Herramientas:
- oras: CLI para OCI artifacts.
- cosign attest: adjuntar attestations firmadas.
- chainguard-images: imágenes pre-firmadas con SBOMs.
Challenges actuales
Ser honesto sobre lo que no funciona perfecto aún:
- Rekor pública limits: Rekor pública tiene rate limits; empresas grandes necesitan propio.
- Key distribution: verificar firma requiere conocer qué identidades aceptar. Governance necesario.
- Rotación de identidades: si cambia el CI identity, verificación puede romper.
- Registros legacy: algunos registros antiguos no soportan OCI artifacts.
- Binary authorization vs Sigstore: algunos ecosistemas tienen mecanismos propios.
El debate: keyless vs KMS
Sigstore keyless se apoya en Fulcio público. Alternativas:
- KMS signing: clave en AWS KMS, GCP KMS, HashiCorp Vault. No depende de Fulcio.
- Static keypair: clave generada localmente, gestionada por la empresa.
Para empresas reguladas, KMS tiende a preferirse. Para la mayoría, keyless es más simple.
Casos reales
- Chainguard: todas las imágenes firmadas, SBOMs adjuntos.
- Distroless: firmadas por Google.
- Alpine Linux: explorando firmas.
- Anthos: policy enforcement con signatures.
El horizonte: trusted supply chain
Más allá de firma de una imagen, la dirección es:
- Build provenance completo (SLSA L3+).
- Reproducible builds donde posible.
- Policy as code sobre qué identidades y processes son aceptables.
- Observabilidad del supply chain: visibilidad de qué llega a producción.
Sigstore es pieza fundacional. El edificio completo aún se construye.
Recomendaciones prácticas
Para una empresa adoptando hoy:
- Firmar con cosign keyless en CI si usas GitHub/GitLab/Gitea.
- Elegir un registry que soporte: GHCR para GitHub-native, Harbor para self-hosted.
- Verificación en admission con Kyverno o Gatekeeper.
- Documentar identidades aceptadas en Git (como policy).
- Alertar sobre imágenes sin firma en producción.
- Revisar rotación de identidades cada año.
Conclusión
Sigstore en registros de imágenes ha pasado de propuesta a realidad operable. GHCR, Harbor, Quay tienen soporte pulido; Docker Hub, ECR, GAR están en adopción. La política de “solo desplegar imágenes firmadas con identidad conocida” es factible hoy, no un futuro lejano. Para empresas serias sobre supply chain security, no implementarla en 2024 es una omisión deliberada. El tooling existe; la curva de aprendizaje es manejable; el ecosistema se mueve en esta dirección.
Síguenos en jacar.es para más sobre supply chain security, DevSecOps y registros OCI.